using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace IUPUI.StellarResults
{
	/// <summary>
	/// Represents an object that can be identified by an ID, name, and description.
	/// </summary>
	[Serializable]
	public abstract class Identifiable : ININ.Xml.Serialization.XmlSerializationBase
	{
		#region Private Properties
		/// <summary>
		/// The protected base field for <see cref="ID"/>.
		/// </summary>
		protected string m_ID = String.Empty;

		/// <summary>
		/// The protected base field for <see cref="Name"/>.
		/// </summary>
		protected string m_Name = String.Empty;

		/// <summary>
		/// The protected base field for <see cref="Description"/>.
		/// </summary>
		protected string m_Description = String.Empty;
		#endregion Private Properties

		#region Public Properties
		/// <summary>
		/// Gets or sets the unique identifier.
		/// </summary>
		/// <value>The ID.</value>
		[Category("Identification")]
		[Description("Gets or sets the unique identifier.")]
		public string ID
		{
			get
			{
				return m_ID;
			}
			set
			{
				m_ID = value;
			}
		}

		/// <summary>
		/// Gets or sets the name.
		/// </summary>
		/// <value>The name.</value>
		[Category("Identification")]
		[Description("Gets or sets the name.")]
		public string Name
		{
			get
			{
				return m_Name;
			}
			set
			{
				m_Name = value;
			}
		}

		/// <summary>
		/// Gets or sets the description.
		/// </summary>
		/// <value>The description.</value>
		[Category("Identification")]
		[Description("Gets or sets the description.")]
		public string Description
		{
			get
			{
				return m_Description;
			}
			set
			{
				m_Description = value;
			}
		}
		#endregion Public Properties
	}
}
